/**
题目:
    给定一个二叉树，原地将它展开为一个单链表。
    例如，给定二叉树

         1
        / \
       2   5
      / \   \
     3   4   6
    将其展开为：

     1
      \
       2
        \
         3
          \
           4
            \
             5
              \
               6
思路:
    前序遍历中 左子树的最右子树为其当前节点右节点的前驱, 当前节点的左节点为其当前节点的右节点
*/
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func flatten(root *TreeNode)  {
    cur := root 
    for cur != nil{
        if cur.Left != nil{
            pre := cur.Left
            next := pre
            for pre.Right != nil{
                pre = pre.Right
            }
            pre.Right = cur.Right
            cur.Left, cur.Right = nil,next
        }
        cur = cur.Right
    }
}
